Computing systems and devices from the smallest of embedded systems to the largest of super computers require resources to accomplish their objectives. Possible resources include CPUs, memory, monitors, hard disk drives, networks, peripherals, and a host of other devices that combine to form a complete computing experience for the user. Over the last decade, users of computing systems and devices have become less sophisticated with respect to the complexity of the computing systems. Users are now more concerned with their computing experience rather than in the details of how their computing system operates. The migration of computing systems toward less sophisticated users has pushed such systems to become more and more complex to compensate for the users lack of computer system expertise. The results of this migration can be seen by the continued increase in complexity and power of current operating systems, including Windows® or Linux.
Computers running Windows® or Linux present a single data portal to a user, where the computer contains nearly all aspects of the user's environment including data, applications, preferred settings, and so on. However, many users currently need multiple portals to their computing environment rather than a single system as they travel from home, to abroad, or to work. Not only do users wish to have access to their data as they move, but they also wish to take their computing experience with them. Laptop computers offer the ability to move, but at great expense. Consequently, numerous systems have been developed to enable a more decentralized user experience approach, including web portals such as Yahoo!®, where a user accesses their email interface from anywhere in the world. Users are no longer concerned about the location of their computing resources, but are rather concerned about having access to their data and having the same computing experience no matter where they are or what device they use as an interface.
A number of problems arise due to users' demand for a uniform experience. First, huge computing services including those being developed by Yahoo!™, Microsoft®, and even Google™ require large centralized server systems to house the massive amount of user's data. Such servers are expensive to operate and maintain. Second, users' experiences tend to be limited to the capabilities these services have to offer, (including email, photo organization, web browsing, searching, and so forth), rather than a complete generalized experience. Third, these large centralized systems do not present users with their complete data set, but rather a small fraction of the data. Nor can the systems necessarily run general applications that users desire when working with their data.
In order to address these limitations and provide a cost effective computing experience for users, a fully decentralized approach is required. Some decentralized computing efforts are well known, including for example, Search for Extra-Terrestrial Intelligence (SETI@Home), the Great Internet Mersenne Prime Search (GIMPS), and various file sharing programs such as BitTorrent, and Kazaa. Although average users can access these applications and programs, the applications offer only a limited decentralized user's experience, which focus on specific capabilities or services rather than the generalized computing needs of the user.
Several decentralized computing platforms exist today that are intended to be generalized, including Beowulf Linux clusters and advanced web services including Microsoft.NET. Unfortunately, these and other decentralized computing platforms have several flaws that impact the user. Among other things they require new software that the user must then purchase or license (as in the case of .NET), or write themselves as in the case of clusters. A further problem is that the new software still requires strong centralized computing systems to support the overall computing experience. Such approaches attack the problem from an application or user point of view, which causes the solution space to be too broad. A broad point of view then tends to limit the solution to course grained approach that results in a high cost of implementation to the user.
A better approach to decentralization of computing resources attacks the problem from a more fined grained perspective, where the system scales incrementally in a more cost effective manner rather than at a systems level were incremental costs are high. Rather than approaching the problem from a computing system standpoint, decentralization can be approached from a fundamental computing resource perspective, in which a computing resource distills to the physical device element level (where a device element could include, but not limited to, a CPU, memory, hard disk, or even a monitor). When these devices combine in a decentralized fashion, a wide range of users gain the benefits of decentralization. In addition, decentralization of devices allows devices to focus on doing what they do best and to be responsible for their own services and capabilities; thereby offloading peripheral management work from an operating system and CPU. Consequently, the operating system and CPU can focus on providing more bandwidth to an application. Decentralization also provides the benefit of scalability, such that a computing system scales up at the atomic device level as opposed to at the system level. Users scale their computing systems by purchasing devices which are more cost effective than complete systems. In addition, older generations of decentralized devices still remain useful and contribute to the over computing system without having to be discarded.
Decentralization, by its very nature, includes the concept of virtualization, where devices are distributed over a network but “appear” as locally connected from the perspective of other devices. With device virtualization provided over a network, the computing resources no longer have to be local to the user. This implies a user gains access to their computing experience and resources from any connected location once the user takes appropriate authentication or security measures. Such a decentralized computing system addresses the remaining problems with current architectures: users maintain access to their data, users can use multiple interfaces while maintaining their computing experience, applications do not have to be rewritten because decentralization occurs at the device level rather than the system level, and costs to the user decrease because the user scales their system by purchasing devices at the atomic unit rather than buying at the system level.
Beyond the benefits to the user, decentralization at the device level also creates opportunities for creating new capabilities or services by using decentralized devices as building blocks. Just as devices focus on doing what they do well, new products can be built that aggregate device level capabilities or services into more powerful capabilities or services while maintaining scalability at device level. The new products offer the powerful capabilities or services as a “device” to the rest of the system even though the “devices” are actually virtual in nature. For instance, hard disk drives can be aggregated into a network storage system with RAID capabilities, where the entire storage system appears as a single storage device. The network storage system focuses on storing and retrieving data, without incurring overhead associated with complete system architectures. Because the drives are decentralized and virtualized, the storage system can still be scaled at the atomic level, the hard disk drive, which is much more cost effective to the end user.
To fully realize the benefits and capabilities offered by decentralization, devices and virtual devices need to pass information to each other in an organized way, as if they exist on a virtualized bus. Therefore, there is a need for modules and methods that:                Process information packets addressed to groups of devices, individual devices, or virtual devices;        Includes interfaces to target devices and to some form of network;        Extend device virtual buses over large distances so device can be accessed from any location; and        Manage virtual devices offering aggregated behavior.        
Such a set of modules combine with target devices to offer aggregated capabilities, and can also integrate into existing computing systems. When installed in a computing system such as Windows®, the module could take the form of a device driver and the aggregate capabilities or services of the remote target devices appear as a single device.
A number of benefits are realized from this approach. First, computing systems employ such modules to distribute the locality of their physical device elements. This is beneficial in cases where physical security is needed or where geographic isolation offers protection against acts of God. Second, users purchase enhanced capabilities by purchasing computing systems resources in discreet units rather than complete systems. If they wish to double the computing power of their system, the consumer purchases a single CPU (assuming an appropriate module is attached to the CPU) and adds it to the decentralized system. The cost for a single device is much less than the cost of a complete system. Along these lines, old components can be retained and still provide useful capabilities even though they are not as powerful as the new component because the old components can still function within the decentralized system. Third, the customer has access to their experience from anywhere in the world because the virtual system bus extends to any length. Once a user authenticates to their environment, the distributed system presents the user with their preferred experience to them no matter the actual location of the discreet resources housing the user's data. Forth, more complex structures can be created from the discreet device building blocks. For instance, sophisticated RAID structures can be created by using hard drives and appropriately programmed modules attached to the drives. The RAID structures appear as a single drive to the user or the user's applications.
Thus, specific compositions and methods of virtual device communication, information packets transformation, and virtual bus tunnels have been disclosed. It should be apparent, however, to those skilled in the art that many more modifications besides those already described are possible without departing from the inventive concepts herein. The inventive subject matter, therefore, is not to be restricted except in the spirit of the disclosure. Moreover, in interpreting the disclosure all terms should be interpreted in the broadest possible manner consistent with the context. In particular the terms “comprises” and “comprising” should be interpreted as referring to the elements, components, or steps in a non-exclusive manner, indicating that the referenced elements, components, or steps can be present, or utilized, or combined with other elements, components, or steps that are not expressly referenced.